package day4;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

//可周期定长线程池
public class Demo4{
    public static void main(String[] args) {
//        ExecutorService es= Executors.newScheduledThreadPool(3);
//        //1.基础操作 execute()
//        for(int i=0;i<100;i++){
//            es.execute(()->{
//                System.out.println(Thread.currentThread().getName());
//            });
//        }
//        es.shutdown();
        //2.支持延迟操作  是子类自己的方法 不能声明父类对象
        ScheduledExecutorService ses=Executors.newScheduledThreadPool(3);
        //ses.schedule(Runnable,首次延迟时间,时间单位)
//        for(int i=0;i<10;i++) {
//            ses.schedule(()->{
//                System.out.println(Thread.currentThread().getName());
//            },5, TimeUnit.SECONDS);
//        }
        //3.支持周期操作  是子类自己的方法 不能声明父类对象
        //ses.scheduleAtFixedRate(Runnable,首次延迟时间,周期时间,时间单位);
        for(int i=0;i<3;i++){
            ses.scheduleAtFixedRate(()->{
                System.out.println(Thread.currentThread().getName());
            },3,2,TimeUnit.SECONDS);
        }
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        ses.shutdown();
    }
}
